-- SEGURIDAD
CREATE TABLE TB_NIVELACCESO (
    TipoId BIGINT(20) NOT NULL,
    OpcionId bigint(20) NOT NULL,
    NivelPermisoId INTEGER,
    PRIMARY KEY(TipoId, OpcionId)
)ENGINE=INNODB;
GO

CREATE TABLE TB_OPCION (
    OpcionId INTEGER AUTO_INCREMENT NOT NULL,
    Nombre VARCHAR(50),
    Accion VARCHAR(100),
    PadreOpcionId INTEGER,
    Orden SMALLINT,
    PRIMARY KEY(OpcionId)
)ENGINE=INNODB;
GO

CREATE TABLE TB_TIPO (
    TipoId BIGINT(20) AUTO_INCREMENT NOT NULL,
    Nombre VARCHAR(100),
    Descripcion VARCHAR(100),
    PRIMARY KEY(TipoId)
)ENGINE=INNODB;
GO

CREATE TABLE TB_USUARIO (
    UsuarioId BIGINT(20) AUTO_INCREMENT NOT NULL,
    Usuario VARCHAR(100) NOT NULL,
    Contrasena VARCHAR(30) NOT NULL,
    Nombre VARCHAR(100) NULL,
    Apellido VARCHAR(100) NULL,
    TipoId BIGINT(20) NOT NULL,
    Estado INTEGER NULL,
    PRIMARY KEY(UsuarioId),
)ENGINE=INNODB;
GO
--------------
--INDEX
--------------
CREATE INDEX R_10
    ON TB_NIVELACCESO(TipoId)
GO
CREATE INDEX R_11
    ON TB_NIVELACCESO(OpcionId)
GO
CREATE INDEX R_12
    ON TB_OPCION(Parentoptionid)
GO
CREATE INDEX R_13
    ON TB_USUARIO(TipoId)
GO

--------------
--FOREING
--------------
ALTER TABLE TB_NIVELACCESO
ADD CONSTRAINT FK1_TB_NIVELACCESO
FOREIGN KEY (TipoId) 
REFERENCES TB_TIPO(TipoId);
GO

ALTER TABLE TB_NIVELACCESO
ADD CONSTRAINT FK2_TB_NIVELACCESO
FOREIGN KEY (OpcionId) 
REFERENCES TB_OPCION(OpcionId);
GO

ALTER TABLE TB_USUARIO
ADD CONSTRAINT FK1_TB_USUARIO
FOREIGN KEY (TipoId) 
REFERENCES TB_TIPO(TipoId);
GO
